Implement these functions. (#327228, Thomas Broyer).
authorAnders Carlsson <andersca@imendio.com>
Wed, 18 Jan 2006 10:06:00 +0000 (10:06 +0000)
committerAnders Carlsson <andersca@src.gnome.org>
Wed, 18 Jan 2006 10:06:00 +0000 (10:06 +0000)
2006-01-18  Anders Carlsson  <andersca@imendio.com>

        * gdk/quartz/gdkevents-quartz.c:
        (get_mm_from_pixels):
        (gdk_screen_get_width_mm):
        (gdk_screen_get_height_mm):
        Implement these functions.
        (#327228, Thomas Broyer).

ChangeLog
ChangeLog.pre-2-10
gdk/quartz/gdkscreen-quartz.c

index 75ff2f6f86ae01264feb45579b8a7d316c4a316e..a4d5a66e95497d4e66c9c55949e1da92dc2a97e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-01-18  Anders Carlsson  <andersca@imendio.com>
+
+        * gdk/quartz/gdkevents-quartz.c:
+        (get_mm_from_pixels):
+        (gdk_screen_get_width_mm):
+        (gdk_screen_get_height_mm):
+       Implement these functions.
+       (#327228, Thomas Broyer).
+
 2006-01-18  Anders Carlsson  <andersca@imendio.com>
 
         * gdk/quartz/gdkdrawable-quartz.c:
index 75ff2f6f86ae01264feb45579b8a7d316c4a316e..a4d5a66e95497d4e66c9c55949e1da92dc2a97e2 100644 (file)
@@ -1,3 +1,12 @@
+2006-01-18  Anders Carlsson  <andersca@imendio.com>
+
+        * gdk/quartz/gdkevents-quartz.c:
+        (get_mm_from_pixels):
+        (gdk_screen_get_width_mm):
+        (gdk_screen_get_height_mm):
+       Implement these functions.
+       (#327228, Thomas Broyer).
+
 2006-01-18  Anders Carlsson  <andersca@imendio.com>
 
         * gdk/quartz/gdkdrawable-quartz.c:
index dbb82bce1d81eeca188f1cb5c3d6528285a8fedc..f23eba227e027ea659cdc54d754f533f712a34b4 100644 (file)
@@ -132,22 +132,67 @@ gdk_screen_get_height (GdkScreen *screen)
   return height;
 }
 
+static gint
+get_mm_from_pixels (NSScreen *screen, int pixels)
+{
+  /* userSpaceScaleFactor is in "pixels per point", 
+   * 72 is the number of points per inch, 
+   * and 25.4 is the number of millimeters per inch.
+   */
+  return ((pixels / [screen userSpaceScaleFactor]) / 72) * 25.4;
+}
+
 gint
 gdk_screen_get_width_mm (GdkScreen *screen)
 {
+  int i;
+  gint width;
+  NSArray *array;
+  NSAutoreleasePool *pool;
+
   g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
 
-  /* FIXME: Implement */
-  return 0;
+  pool = [[NSAutoreleasePool alloc] init];
+  array = [NSScreen screens];
+
+  width = 0;
+  for (i = 0; i < [array count]; i++)
+    {
+      NSScreen *screen = [array objectAtIndex:i];
+      NSRect rect = [screen frame];
+      width += get_mm_from_pixels (screen, rect.size.width);
+    }
+
+  [pool release];
+
+  return width;
 }
 
 gint
 gdk_screen_get_height_mm (GdkScreen *screen)
 {
+  int i;
+  gint height;
+  NSArray *array;
+  NSAutoreleasePool *pool;
+
   g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
 
-  /* FIXME: Implement */
-  return 0;
+  pool = [[NSAutoreleasePool alloc] init];
+  array = [NSScreen screens];
+
+  height = 0;
+  for (i = 0; i < [array count]; i++)
+    {
+      NSScreen *screen = [array objectAtIndex:i];
+      NSRect rect = [screen frame];
+      gint h = get_mm_from_pixels (screen, rect.size.height);
+      height = MAX (height, h);
+    }
+
+  [pool release];
+
+  return height;
 }
 
 int